package com.lh.fly;
import android.app.Application;
import android.content.Context;
import android.util.DisplayMetrics;
import com.lh.fly.api.Constants;
import com.lh.fly.common.Config;
import com.lh.fly.common.assist.Network;
import com.squareup.okhttp.Cache;
import com.squareup.okhttp.OkHttpClient;
import java.io.File;
import retrofit.RequestInterceptor;
import retrofit.RestAdapter;
import retrofit.client.OkClient;
public class App extends Application {
public static int SCREEN_WIDTH;
public static int SCREEN_HEIGHT;
private static RestAdapter mRestAdapter;
private static Context sContext;
@Override
public void onCreate() {
super.onCreate();
sContext = getApplicationContext();
init();
}
private void init() {
DisplayMetrics dm =getResources().getDisplayMetrics();
SCREEN_WIDTH = Math.min(dm.widthPixels, dm.heightPixels);
SCREEN_HEIGHT = Math.max(dm.widthPixels, dm.heightPixels);
OkHttpClient client = new OkHttpClient();
File cacheDirectory = new File(Config.CACHE_DIR);
if (!cacheDirectory.exists()) {
cacheDirectory.mkdirs();
}
final Cache cache = new Cache(cacheDirectory, Config.CACHE_SIZE);
client.setCache(cache);
mRestAdapter = new RestAdapter.Builder()
.setEndpoint(Constants.BASE_URL)
.setClient(new OkClient(client))
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
if (Network.isConnected(getApplicationContext())) {
int maxAge = 2; // read from cache for 1 minute
request.addHeader(
"Cache-Control",
"public, max-age=" + maxAge);
} else {
int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
request.addHeader(
"Cache-Control",
"public, only-if-cached, max-stale=" + maxStale);
}
}
})
.build();
}
public static RestAdapter getRestAdapter() {
return mRestAdapter;
}
public static <T> T getService(Class<T> service) {
return getRestAdapter().create(service);
}
public static Context getAppContext() {
return sContext;
}
}